// go:build linux | | | freebsd | | openbsd | | netbsd | | |蜻蜓
// +build linux freebsd openbsd netbsd蜻蜓

// /版权所有人2014。版权所有。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可在许可证文件中找到。

package syscall

import "unsafe"

// FCNTL64系统调用通常为SYS\U FCNTL，但在32位Linux上被flock\U Linux\U 32位系统覆盖。改为SYS\U FCNTL64。
var fcntl64Syscall uintptr = SYS_FCNTL

// FcntlFlock为F_GETLK、F_SETLK或F_SETLKW命令执行fcntl系统调用。
func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
	_, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))
	if errno == 0 {
		return nil
	}
	return errno
}
